Hi,
I'm trying to code Dijkstra by using STL, but I keep getting this error. I must be missing but I can't find it, here is the code:
and here are the errors:Code:#include <iostream> #include <cstdio> #include <set> #include <cstdlib> #include <ctime> #include <fstream> #include <vector> #include <algorithm> #include <utility> #define ii pair<int,int> #define MAXV 1000 #define UNDIRECTED 1 #define MAX 0x7fffffff int startv = 1, finalv = 0, nvertex, nedge; using namespace std; FILE *in,*out; //ifstream in(" void dijkstra(); void read_file(); vector<ii > m[MAXV]; int main() { read_file(); dijkstra(); } void read_file() { in = fopen("girdi.in","r"); fscanf(in,"%d%d",&nvertex,&nedge); finalv = nvertex; for (int i=0; i<nedge; ++i) { int v1,v2,w; fscanf(in,"%d%d%d",&v1,&v2,&w); m[v1].push_back(ii(v2,w)); if (UNDIRECTED) m[v2].push_back(ii(v1,w)); } } void dijkstra() { set<ii > Q; int d[MAXV]; for (int i=0; i<MAXV; i++) d[i] = MAX; d[startv] = 0; Q.insert(ii(startv,d[startv])); while (!Q.empty()) { ii cur = *Q.begin(); Q.erase(Q.begin()); int v = cur.first, d = cur.second; for (vector<ii >::iterator it = m[v].begin(); it != m[v].end(); it++) { int v2 = it->first, cost = it->second; if (d[v2] > d[v] + cost) { if (d[v2] != MAX) Q.erase(Q.find(ii(v2,d[v2]))); d[v2] = d[v] + cost; Q.insert(ii(v2,d[v2])); } } } printf("%d\n",d[finalv]); }
Thanks in advance!Code:main.cpp: In function `void dijkstra()': main.cpp:54: error: invalid types `int[int]' for array subscript main.cpp:54: error: invalid types `int[int]' for array subscript main.cpp:55: error: invalid types `int[int]' for array subscript main.cpp:55: error: invalid types `int[int]' for array subscript main.cpp:56: error: invalid types `int[int]' for array subscript main.cpp:56: error: invalid types `int[int]' for array subscript main.cpp:57: error: invalid types `int[int]' for array subscript

